﻿using KinonekoSoftware.CodariaDB.Documents.DataParts.Modules.RVE;

namespace KinonekoSoftware.CodariaDB.Documents.DataParts.Modules
{
    public sealed class CharacterEpoch : RootObject
    {
        public const string ID_DefaultEpoch = "Epoch.Main";
        private      string _name;
        private      string _characterName;
        private      bool   _enableAltAvatarSupport;
        private      bool   _enableAltNameSupport;
        private      bool   _enableAltIntroSupport;


        //-------------------------------------------------------------
        //
        //          Basic
        //
        //-------------------------------------------------------------

        public string Gender     { get; set; }
        public string Age        { get; set; }
        public string Height     { get; set; }
        public string Weight     { get; set; }
        public string Birthday   { get; set; }
        public string BirthPlace { get; set; }
        public string Species    { get; set; }

        //-------------------------------------------------------------
        //
        //          Setting
        //
        //-------------------------------------------------------------

        public          string            CharacterAvatar { get; set; }
        public          string            CharacterIntro  { get; set; }
        public          Block_RVE         Rve             { get; init; }
        public required List<ModuleBlock> Blocks          { get; init; }



        /// <summary>
        /// 获取或设置 <see cref="CharacterName"/> 属性。
        /// </summary>
        public string CharacterName
        {
            get => _characterName;
            set => SetValue(ref _characterName, value);
        }

        public bool EnableAltIntroSupport
        {
            get => _enableAltIntroSupport;
            set => SetValue(ref _enableAltIntroSupport, value);
        }

        public bool EnableAltNameSupport
        {
            get => _enableAltNameSupport;
            set => SetValue(ref _enableAltNameSupport, value);
        }

        public bool EnableAltAvatarSupport
        {
            get => _enableAltAvatarSupport;
            set => SetValue(ref _enableAltAvatarSupport, value);
        }


        //-------------------------------------------------------------
        //
        //          Nature
        //
        //-------------------------------------------------------------


        //-------------------------------------------------------------
        //
        //          Relationships
        //
        //-------------------------------------------------------------

        public string Name
        {
            get => _name;
            set => SetValue(ref _name, value);
        }
    }
}